/*******************************************************************************
 * Copyright 2011 See AUTHORS file.
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 ******************************************************************************/
package info.u250.c2d.graphic;

import com.badlogic.gdx.graphics.Color;

/**
 * <p>An enumeration of the WebColors according to http://en.wikipedia.org/wiki/Web_colors#X11_color_names.<br/>
 * The colors are also partitioned into PINK_COLORS, RED_COLORS, etc.</p>
 *
 * @version 1.0
 * @author BLinK3rO
 * @author Centril<twingoow@gmail.com> / Mazdak Farrokhzad.
 */
public enum WebColors {
	// Pink colors.
    PINK( new Color(1f, 0.752941176470588f, 0.796078431372549f, 1f) ),
    LIGHT_PINK( new Color(1f, 0.713725490196078f, 0.756862745098039f, 1f) ),
    HOT_PINK( new Color(1f, 0.411764705882353f, 0.705882352941176f, 1f) ),
    DEEP_PINK( new Color(1f, 0.0784313725490196f, 0.576470588235294f, 1f) ),
    PALE_VIOLET_RED( new Color(0.858823529411765f, 0.43921568627451f, 0.576470588235294f, 1f) ),
    MEDIUM_VIOLET_RED( new Color(0.780392156862745f, 0.0823529411764706f, 0.52156862745098f, 1f) ),

    // Red colors.
    LIGHT_SALMON( new Color(1f, 0.627450980392157f, 0.47843137254902f, 1f) ),
    SALMON( new Color(0.980392156862745f, 0.501960784313726f, 0.447058823529412f, 1f) ),
    DARK_SALMON( new Color(0.913725490196078f, 0.588235294117647f, 0.47843137254902f, 1f) ),
    LIGHT_CORAL( new Color(0.941176470588235f, 0.501960784313726f, 0.501960784313726f, 1f) ),
    INDIAN_RED( new Color(0.803921568627451f, 0.36078431372549f, 0.36078431372549f, 1f) ),
    CRIMSON( new Color(0.862745098039216f, 0.0784313725490196f, 0.235294117647059f, 1f) ),
    FIRE_BRICK( new Color(0.698039215686274f, 0.133333333333333f, 0.133333333333333f, 1f) ),
    DARK_RED( new Color(0.545098039215686f, 0f, 0f, 1f) ),
    RED( Color.RED ),

    // Orange colors.
    ORANGE_RED( new Color(1f, 0.270588235294118f, 0f, 1f) ),
    TOMATO( new Color(1f, 0.388235294117647f, 0.27843137254902f, 1f) ),
    CORAL( new Color(1f, 0.498039215686275f, 0.313725490196078f, 1f) ),
    DARK_ORANGE( new Color(1f, 0.549019607843137f, 0f, 1f) ),
    ORANGE( new Color(1f, 0.647058823529412f, 0f, 1f) ),
    GOLD( new Color(1f, 0.843137254901961f, 0f, 1f) ),

    // Yellow colors.
    YELLOW( Color.YELLOW ),
    LIGHT_YELLOW( new Color(1f, 1f, 0.87843137254902f, 1f) ),
    LEMON_CHIFFON( new Color(1f, 0.980392156862745f, 0.803921568627451f, 1f) ),
    LIGHT_GOLDENROD_YELLOW( new Color(0.980392156862745f, 0.980392156862745f, 0.823529411764706f, 1f) ),
    PAPAYA_WHIP( new Color(1f, 0.937254901960784f, 0.835294117647059f, 1f) ),
    MOCCASIN( new Color(1f, 0.894117647058824f, 0.709803921568627f, 1f) ),
    PEACH_PUFF( new Color(1f, 0.854901960784314f, 0.725490196078431f, 1f) ),
    PALE_GOLDENROD( new Color(0.933333333333333f, 0.909803921568627f, 0.666666666666667f, 1f) ),
    KHAKI( new Color(0.941176470588235f, 0.901960784313726f, 0.549019607843137f, 1f) ),
    DARK_KHAKI( new Color(0.741176470588235f, 0.717647058823529f, 0.419607843137255f, 1f) ),

    // Brown colors.
    CORNSILK( new Color(1f, 0.972549019607843f, 0.862745098039216f, 1f) ),
    BLANCHED_ALMOND( new Color(1f, 0.92156862745098f, 0.803921568627451f, 1f) ),
    BISQUE( new Color(1f, 0.894117647058824f, 0.768627450980392f, 1f) ),
    NAVAJO_WHITE( new Color(1f, 0.870588235294118f, 0.67843137254902f, 1f) ),
    WHEAT( new Color(0.96078431372549f, 0.870588235294118f, 0.701960784313725f, 1f) ),
    BURLY_WOOD( new Color(0.870588235294118f, 0.72156862745098f, 0.529411764705882f, 1f) ),
    TAN( new Color(0.823529411764706f, 0.705882352941176f, 0.549019607843137f, 1f) ),
    ROSY_BROWN( new Color(0.737254901960784f, 0.56078431372549f, 0.56078431372549f, 1f) ),
    SANDY_BROWN( new Color(0.956862745098039f, 0.643137254901961f, 0.376470588235294f, 1f) ),
    GOLDENROD( new Color(0.854901960784314f, 0.647058823529412f, 0.125490196078431f, 1f) ),
    DARK_GOLDENROD( new Color(0.72156862745098f, 0.525490196078431f, 0.0431372549019608f, 1f) ),
    PERU( new Color(0.803921568627451f, 0.52156862745098f, 0.247058823529412f, 1f) ),
    CHOCOLATE( new Color(0.823529411764706f, 0.411764705882353f, 0.117647058823529f, 1f) ),
    SADDLE_BROWN( new Color(0.545098039215686f, 0.270588235294118f, 0.0745098039215686f, 1f) ),
    SIENNA( new Color(0.627450980392157f, 0.32156862745098f, 0.176470588235294f, 1f) ),
    BROWN( new Color(0.647058823529412f, 0.164705882352941f, 0.164705882352941f, 1f) ),
    MAROON( new Color(0.501960784313726f, 0f, 0f, 1f) ),

    // Green colors.
    DARK_OLIVE_GREEN( new Color(0.333333333333333f, 0.419607843137255f, 0.184313725490196f, 1f) ),
    OLIVE( new Color(0.501960784313726f, 0.501960784313726f, 0f, 1f) ),
    OLIVE_DRAB( new Color(0.419607843137255f, 0.556862745098039f, 0.137254901960784f, 1f) ),
    YELLOW_GREEN( new Color(0.603921568627451f, 0.803921568627451f, 0.196078431372549f, 1f) ),
    LIME_GREEN( new Color(0.196078431372549f, 0.803921568627451f, 0.196078431372549f, 1f) ),
    LIME( Color.GREEN ),
    LAWN_GREEN( new Color(0.486274509803922f, 0.988235294117647f, 0f, 1f) ),
    CHARTREUSE( new Color(0.498039215686275f, 1f, 0f, 1f) ),
    GREEN_YELLOW( new Color(0.67843137254902f, 1f, 0.184313725490196f, 1f) ),
    SPRING_GREEN( new Color(0f, 1f, 0.498039215686275f, 1f) ),
    MEDIUM_SPRING_GREEN( new Color(0f, 0.980392156862745f, 0.603921568627451f, 1f) ),
    LIGHT_GREEN( new Color(0.564705882352941f, 0.933333333333333f, 0.564705882352941f, 1f) ),
    PALE_GREEN( new Color(0.596078431372549f, 0.984313725490196f, 0.596078431372549f, 1f) ),
    DARK_SEA_GREEN( new Color(0.56078431372549f, 0.737254901960784f, 0.56078431372549f, 1f) ),
    MEDIUM_SEA_GREEN( new Color(0.235294117647059f, 0.701960784313725f, 0.443137254901961f, 1f) ),
    SEA_GREEN( new Color(0.180392156862745f, 0.545098039215686f, 0.341176470588235f, 1f) ),
    FOREST_GREEN( new Color(0.133333333333333f, 0.545098039215686f, 0.133333333333333f, 1f) ),
    GREEN( new Color(0f, 0.501960784313726f, 0f, 1f) ),
    DARK_GREEN( new Color(0f, 0.392156862745098f, 0f, 1f) ),

    // Cyan colors.
    MEDIUM_AQUAMARINE( new Color(0.4f, 0.803921568627451f, 0.666666666666667f, 1f) ),
    AQUA( Color.CYAN ),
    CYAN( Color.CYAN ),
    LIGHT_CYAN( new Color(0.87843137254902f, 1f, 1f, 1f) ),
    PALE_TURQUOISE( new Color(0.686274509803922f, 0.933333333333333f, 0.933333333333333f, 1f) ),
    AQUAMARINE( new Color(0.498039215686275f, 1f, 0.831372549019608f, 1f) ),
    TURQUOISE( new Color(0.250980392156863f, 0.87843137254902f, 0.815686274509804f, 1f) ),
    MEDIUM_TURQUOISE( new Color(0.282352941176471f, 0.819607843137255f, 0.8f, 1f) ),
    DARK_TURQUOISE( new Color(0f, 0.807843137254902f, 0.819607843137255f, 1f) ),
    LIGHT_SEA_GREEN( new Color(0.125490196078431f, 0.698039215686274f, 0.666666666666667f, 1f) ),
    CADET_BLUE( new Color(0.372549019607843f, 0.619607843137255f, 0.627450980392157f, 1f) ),
    DARK_CYAN( new Color(0f, 0.545098039215686f, 0.545098039215686f, 1f) ),
    TEAL( new Color(0f, 0.501960784313726f, 0.501960784313726f, 1f) ),

    // Blue colors.
    LIGHT_STEEL_BLUE( new Color(0.690196078431373f, 0.768627450980392f, 0.870588235294118f, 1f) ),
    POWDER_BLUE( new Color(0.690196078431373f, 0.87843137254902f, 0.901960784313726f, 1f) ),
    LIGHT_BLUE( new Color(0.67843137254902f, 0.847058823529412f, 0.901960784313726f, 1f) ),
    SKY_BLUE( new Color(0.529411764705882f, 0.807843137254902f, 0.92156862745098f, 1f) ),
    LIGHT_SKY_BLUE( new Color(0.529411764705882f, 0.807843137254902f, 0.980392156862745f, 1f) ),
    DEEP_SKY_BLUE( new Color(0f, 0.749019607843137f, 1f, 1f) ),
    DODGER_BLUE( new Color(0.117647058823529f, 0.564705882352941f, 1f, 1f) ),
    CORNFLOWER_BLUE( new Color(0.392156862745098f, 0.584313725490196f, 0.929411764705882f, 1f) ),
    STEEL_BLUE( new Color(0.274509803921569f, 0.509803921568627f, 0.705882352941176f, 1f) ),
    ROYAL_BLUE( new Color(0.254901960784314f, 0.411764705882353f, 0.882352941176471f, 1f) ),
    BLUE( Color.BLUE ),
    MEDIUM_BLUE( new Color(0f, 0f, 0.803921568627451f, 1f) ),
    DARK_BLUE( new Color(0f, 0f, 0.545098039215686f, 1f) ),
    NAVY( new Color(0f, 0f, 0.501960784313726f, 1f) ),
    MIDNIGHT_BLUE( new Color(0.0980392156862745f, 0.0980392156862745f, 0.43921568627451f, 1f) ),

    // Purple colors.
    LAVENDER( new Color(0.901960784313726f, 0.901960784313726f, 0.980392156862745f, 1f) ),
    THISTLE( new Color(0.847058823529412f, 0.749019607843137f, 0.847058823529412f, 1f) ),
    PLUM( new Color(0.866666666666667f, 0.627450980392157f, 0.866666666666667f, 1f) ),
    VIOLET( new Color(0.933333333333333f, 0.509803921568627f, 0.933333333333333f, 1f) ),
    ORCHID( new Color(0.854901960784314f, 0.43921568627451f, 0.83921568627451f, 1f) ),
    FUCHSIA( Color.MAGENTA ),
    MAGENTA( Color.MAGENTA ),
    MEDIUM_ORCHID( new Color(0.729411764705882f, 0.333333333333333f, 0.827450980392157f, 1f) ),
    MEDIUM_PURPLE( new Color(0.576470588235294f, 0.43921568627451f, 0.858823529411765f, 1f) ),
    BLUE_VIOLET( new Color(0.541176470588235f, 0.168627450980392f, 0.886274509803921f, 1f) ),
    DARK_VIOLET( new Color(0.580392156862745f, 0f, 0.827450980392157f, 1f) ),
    DARK_ORCHID( new Color(0.6f, 0.196078431372549f, 0.8f, 1f) ),
    DARK_MAGENTA( new Color(0.545098039215686f, 0f, 0.545098039215686f, 1f) ),
    PURPLE( new Color(0.501960784313726f, 0f, 0.501960784313726f, 1f) ),
    INDIGO( new Color(0.294117647058823f, 0f, 0.509803921568627f, 1f) ),
    DARK_SLATE_BLUE( new Color(0.282352941176471f, 0.23921568627451f, 0.545098039215686f, 1f) ),
    SLATE_BLUE( new Color(0.415686274509804f, 0.352941176470588f, 0.803921568627451f, 1f) ),
    MEDIUM_SLATE_BLUE( new Color(0.482352941176471f, 0.407843137254902f, 0.933333333333333f, 1f) ),

    // White-Black colors.
    WHITE( Color.WHITE ),
    SNOW( new Color(1f, 0.980392156862745f, 0.980392156862745f, 1f) ),
    HONEYDEW( new Color(0.941176470588235f, 1f, 0.941176470588235f, 1f) ),
    MINT_CREAM( new Color(0.96078431372549f, 1f, 0.980392156862745f, 1f) ),
    AZURE( new Color(0.941176470588235f, 1f, 1f, 1f) ),
    ALICE_BLUE( new Color(0.941176470588235f, 0.972549019607843f, 1f, 1f) ),
    GHOST_WHITE( new Color(0.972549019607843f, 0.972549019607843f, 1f, 1f) ),
    WHITE_SMOKE( new Color(0.96078431372549f, 0.96078431372549f, 0.96078431372549f, 1f) ),
    SEASHELL( new Color(1f, 0.96078431372549f, 0.933333333333333f, 1f) ),
    BEIGE( new Color(0.96078431372549f, 0.96078431372549f, 0.862745098039216f, 1f) ),
    OLD_LACE( new Color(0.992156862745098f, 0.96078431372549f, 0.901960784313726f, 1f) ),
    FLORAL_WHITE( new Color(1f, 0.980392156862745f, 0.941176470588235f, 1f) ),
    IVORY( new Color(1f, 1f, 0.941176470588235f, 1f) ),
    ANTIQUE_WHITE( new Color(0.980392156862745f, 0.92156862745098f, 0.843137254901961f, 1f) ),
    LINEN( new Color(0.980392156862745f, 0.941176470588235f, 0.901960784313726f, 1f) ),
    LAVENDER_BLUSH( new Color(1f, 0.941176470588235f, 0.96078431372549f, 1f) ),
    MISTY_ROSE( new Color(1f, 0.894117647058824f, 0.882352941176471f, 1f) ),
    GAINSBORO( new Color(0.862745098039216f, 0.862745098039216f, 0.862745098039216f, 1f) ),
    LIGHT_GRAY( new Color(0.827450980392157f, 0.827450980392157f, 0.827450980392157f, 1f) ),
    SILVER( new Color(0.752941176470588f, 0.752941176470588f, 0.752941176470588f, 1f) ),
    DARK_GRAY( new Color(0.662745098039216f, 0.662745098039216f, 0.662745098039216f, 1f) ),
    GRAY( new Color(0.501960784313726f, 0.501960784313726f, 0.501960784313726f, 1f) ),
    DIM_GRAY( new Color(0.411764705882353f, 0.411764705882353f, 0.411764705882353f, 1f) ),
    LIGHT_SLATE_GRAY( new Color(0.466666666666667f, 0.533333333333333f, 0.6f, 1f) ),
    SLATE_GRAY( new Color(0.43921568627451f, 0.501960784313726f, 0.564705882352941f, 1f) ),
    DARK_SLATE_GRAY( new Color(0.184313725490196f, 0.309803921568627f, 0.309803921568627f, 1f) ),
    BLACK( Color.BLACK );

    public static final WebColors[] PINK_COLORS = new WebColors[] { PINK, LIGHT_PINK, HOT_PINK, DEEP_PINK, PALE_VIOLET_RED, MEDIUM_VIOLET_RED };
   
    public static final WebColors[] RED_COLORS = new WebColors[] { LIGHT_SALMON, SALMON, DARK_SALMON, LIGHT_CORAL, INDIAN_RED, CRIMSON, FIRE_BRICK, DARK_RED, RED };

    public static final WebColors[] ORANGE_COLORS = new WebColors[] { ORANGE_RED, TOMATO, CORAL, DARK_ORANGE, ORANGE, GOLD };
   
    public static final WebColors[] YELLOW_COLORS = new WebColors[] { YELLOW, LIGHT_YELLOW, LEMON_CHIFFON, LIGHT_GOLDENROD_YELLOW,
 	   PAPAYA_WHIP, MOCCASIN, PEACH_PUFF, PALE_GOLDENROD, KHAKI, DARK_KHAKI };

    public static final WebColors[] BROWN_COLORS = new WebColors[] { CORNSILK, BLANCHED_ALMOND, BISQUE, NAVAJO_WHITE, WHEAT, BURLY_WOOD, TAN, ROSY_BROWN, SANDY_BROWN,
 	   GOLDENROD, DARK_GOLDENROD, PERU, CHOCOLATE, SADDLE_BROWN, SIENNA, BROWN, MAROON };

    public static final WebColors[] GREEN_COLORS = new WebColors[] { DARK_OLIVE_GREEN, OLIVE, OLIVE_DRAB, YELLOW_GREEN, LIME_GREEN, LIME, LAWN_GREEN, CHARTREUSE, GREEN_YELLOW,
 	   SPRING_GREEN, MEDIUM_SPRING_GREEN, LIGHT_GREEN, PALE_GREEN, DARK_SEA_GREEN, MEDIUM_SEA_GREEN, SEA_GREEN, FOREST_GREEN, GREEN, DARK_GREEN };

    public static final WebColors[] CYAN_COLORS = new WebColors[] { MEDIUM_AQUAMARINE, AQUA, CYAN, LIGHT_CYAN, PALE_TURQUOISE, AQUAMARINE, TURQUOISE, MEDIUM_TURQUOISE,
 	   DARK_TURQUOISE, DARK_TURQUOISE, LIGHT_SEA_GREEN, CADET_BLUE, DARK_CYAN, TEAL };

    public static final WebColors[] BLUE_COLORS = new WebColors[] { LIGHT_STEEL_BLUE, POWDER_BLUE, LIGHT_BLUE, SKY_BLUE, LIGHT_SKY_BLUE, DEEP_SKY_BLUE, DODGER_BLUE,
 	   CORNFLOWER_BLUE, STEEL_BLUE, ROYAL_BLUE, BLUE, MEDIUM_BLUE, DARK_BLUE, NAVY, MIDNIGHT_BLUE };

    public static final WebColors[] PURPLE_COLORS = new WebColors[] { LAVENDER, THISTLE, PLUM, VIOLET, ORCHID, FUCHSIA, MAGENTA, MEDIUM_ORCHID, MEDIUM_PURPLE, BLUE_VIOLET,
 	   DARK_VIOLET, DARK_ORCHID, DARK_MAGENTA, PURPLE, INDIGO, DARK_SLATE_BLUE, SLATE_BLUE, MEDIUM_SLATE_BLUE };

    public static final WebColors[] GRAYSCALE_COLORS = new WebColors[] { WHITE, SNOW, HONEYDEW, MINT_CREAM, AZURE, ALICE_BLUE, GHOST_WHITE, WHITE_SMOKE, SEASHELL, BEIGE,
 	   OLD_LACE,  FLORAL_WHITE, IVORY, ANTIQUE_WHITE, LINEN, LAVENDER_BLUSH, MISTY_ROSE, GAINSBORO, LIGHT_GRAY, SILVER, DARK_GRAY, GRAY, DIM_GRAY, LIGHT_SLATE_GRAY,
 	   SLATE_GRAY, DARK_SLATE_GRAY, BLACK };

	private final Color color;

	public Color get() {
		return this.color;
	}

	WebColors( Color color ) {
		this.color = color;
	}
}